package com.sg.dto.biz.app.req;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * @desc ImplementConcurrentBehaviorThemeLockComReqDto
 * @使用场景
 */
@Data
public class ImplementConcurrentBehaviorThemeLockComReqDto
        extends BaseDto
        implements Serializable {

    /**
     * Redis数据对象目录 计算临时数据:计算临时数据 测试过程问题:测试过程问题 分段查询临时记录:分段查询临时记录 平台软件配置:平台软件配置 并发主题锁:并发主题锁 执行进度:执行进度 MQ遥控器:MQ遥控器 业务数据锁:业务数据锁 大屏版本:大屏版本
     */
    @ApiModelProperty("Redis数据对象目录")
    private String redisDataObjectCatalogue;

    /**
     * 行为主题锁业务数据对象 REPORT_NUMBER_RELEVANT_BG_MESSAGES:汇报我相关托底消息数量 WORK_TASKS_SENIOR_DEPT_BG_MESSAGES:高层部门工作任务托底消息数量 WORK_TASKS_GRASSROOTS_DEPT_BG_MESSAGES:中基层部门工作任务托底消息数量 WORK_TASKS_SUBORDINATE_DEPT_GRASSROOTS_LEVEL_BG_MESSAGES:中基层下属部门工作任务托底消息数量 ALL_ISSUES_SENIOR_DEPT_BG_MESSAGES:高层部门所有问题托底消息数量 ALL_ISSUES_GRASSROOTS_DEPT_BG_MESSAGES:中基层部门所有问题托底消息数量 WORK_TASK_UCD_LOCK_NUMBER_SWIPES:工作任务UCD托底消息数量锁 I_INITIATED_THE_ISSUE_LOCK_NUMBER_SWIPES:问题我发起的托底消息数量锁 WORK_REPORT_TASK_ME_LOCK_NUMBER_SWIPES:工作任务汇报给我托底消息数量锁 PROBLEM_UCD_LOCK_NUMBER_SWIPES:问题UCD托底消息数量锁 REPORT_TASK_OVERDUE_STATUS_MSG_NUM_SWIPES:汇报任务逾期状态消息数量锁 WORK_TASK_OVERDUE_STATUS_MSG_NUM_SWIPES:工作任务逾期状态消息数量锁 PROBLEM_TIMEOUT_STATUS_MSG_NUM_SWIPES:问题超时状态消息数量锁 GENERATE_REPORT_TASK_DISPATCH_SWIPES:生成汇报任务调度锁 FOUR_TREE_DEVIATION_DAYS_DISPATCH_SWIPES:四棵树偏差天数调度锁 ORG_DEPT_LOC_MSG_NUMBER_SWIPES:组织部门初始化位置消息数量锁 HIGH_MID_BASE_WORK_TASK_AND_PRO_LOC_MSG_NUMBER_SWIPES:高中基层初始化工作任务问题位置消息数量锁 STRONG_REMINDER_MESSAGE_IS_READ_SWIPES:强提醒消息已读锁 UNDERPIN_UPDATE_FINACE_ACCOUNT_SWIPES:托底更新资金账户锁 TOP_MID_BASIC_STEP_CHANGE_SWIPES:高中基层步骤变更锁 MQ_HOVER_QUEUE_LOCK:MQ遥控器取号锁 UPDATE_FINANCIAL_DATA_BUSINESS_SWIPES:更新财务数据业务锁 UPDATE_TARGET_CALC_DATA_BUSINESS_SWIPES:更新目标计算数据业务锁
     */
    @NotNull(message = "行为主题锁业务数据对象不能为空")
    @ApiModelProperty("行为主题锁业务数据对象")
    private String behaviorThemeLockCode;

    /**
     * 通用主键ID
     */
    @ApiModelProperty("通用主键ID")
    private String commPrimaryKey;

    /**
     * 自定义字段1
     */
    @ApiModelProperty("自定义字段1")
    private String customField1;

    /**
     * 自定义字段2
     */
    @ApiModelProperty("自定义字段2")
    private String customField2;

    /**
     * 自定义字段3
     */
    @ApiModelProperty("自定义字段3")
    private String customField3;

    /**
     * 锁定时长
     */
    @ApiModelProperty("锁定时长")
    private Long duration;

    /**
     * 时间单位类型 YEAR:年 MONTH:月 DAY:天 HOUR:小时 MINUTES:分钟 SECOND:秒
     */
    @ApiModelProperty("时间单位类型")
    private String timeUnitType;

    /**
     * 并发上锁失败处理方式 CONCURRENT_LOCK_FAILURE_ERROR_REPORTING:并发上锁失败报错 CONCURRENT_LOCK_FAILURE_NO_ERROR_REPORTED:并发上锁失败不报错
     */
    @ApiModelProperty("并发上锁失败处理方式")
    private String handlingMethodConcurrentLockFailure;

    /**
     * 防并发上锁or解锁 LOCK:上锁 UNLOCK:解锁
     */
    @NotNull(message = "防并发上锁or解锁不能为空")
    @ApiModelProperty("防并发上锁or解锁")
    private String preventConcurrentLockingUnlocking;

    /**
     * 是否批量解锁 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否批量解锁")
    private String whetherUnlockBulk;

}
